/*	Created By Raiscies.
	emmm我知道文本常量写着写着命名就混乱了, But who care, 能用就行, 反正又不打算写英文...
*/

//Rais_DuXingS&T ---------------------------------------------------------//
Blockly.M1 = 'M1';
Blockly.M2 = 'M2';

Blockly.RUN_MOTOR = '运行马达';
Blockly.MOTOR_INDEX = '编号: ';		//unused
Blockly.MOTOR_SPEED = '转速(-255~255):';

Blockly.GET_MOTOR_SPEED = '获取马达转速:';

Blockly.RUN_MOTOR_CAR = '运行马达小车';
Blockly.SPEED = '速度(-255~255):';
Blockly.DIRECTION = '方向(-179~0~180):';

Blockly.SET_WHEELS = '设置轮子:';
Blockly.M1_M2 = 'M1为左轮, M2为右轮';
Blockly.M2_M1 = 'M2为左轮, M1为右轮';

Blockly.SET = '设置';
Blockly.CLOCKWISE	= '顺时针';
Blockly.ANTI_CLOCKWISE = '逆时针';
Blockly.SET_ROTATION = '为前进';

Blockly.GET_WHEEL_SPEED = "获取速度:";
Blockly.LWheel = '左轮';
Blockly.RWheel = '右轮';


//Rais_Deque -------------------------------------------------------------//

Blockly.CREATE_LINKEDLIST = "创建链表";
Blockly.DATA_TYPE		= "数据类型:";
	Blockly.INT			= "整数(int)";
	Blockly.LONG		= "长整数(long)";
	Blockly.FLOAT		= "小数(float)";
	Blockly.CHAR		= "字符(char)";
	Blockly.BYTE		= "字节(byte)";	
	Blockly.STRING		= "字符串(String)";
	Blockly.DOUBLE		= "双精度浮点数(double)";
	Blockly.BOOL		= "布尔(bool)";
	Blockly.CHAR_P		= "char*";
	Blockly.SHORT		= "short";
	
Blockly.CALL_METHOD		= "(调用方法,赋值或留空)"	

Blockly.NEW_NAME		= "名称:";
Blockly.NEW_ELEMENT		= "加入元素:";

Blockly.USER_TYPE		= "其他类型:";

Blockly.GET_LIST		= "获取链表";
Blockly.LIST_LENGTH		= "元素数量";

Blockly.THE_			= "第";
Blockly.INDEX_ELEMENT	= "个元素";

Blockly.THE_LIST		= "链表";
Blockly.PUSH_DATA		= "添加数据到队尾";
Blockly.UNSHIFT_DATA	= "添加数据到队头";
Blockly.ADD_DATA		= "插入数据";
Blockly.TO_APPOINT_PLACE= "到指定位置:";


Blockly.GET_SHIFT 		= "获取并移出";	
Blockly.LIST_HEAD_DATA	= "表头数据";
Blockly.LIST_TAIL_DATA	= "表尾数据";

Blockly.DELETE_ELEMENT	= "删除第";
Blockly.SHIFT_ALL		= "删除所有数据";

Blockly.WARNING_USER_DEFINED_TYPE = '警告: 该图形块仅允许在「创建链表」块的数据类型框中使用!';
Blockly.TIP_CALL_METHODS		= "\n调用方法,赋值或留空, 请勿加分号.";
Blockly.TIP_CREATE_LINKEDLIST	= "创建一个链表.\n若数据类型是一个引用类型或指针类型(& or *), 则链表只会保存数据的指针; 否则链表将会为每一个传入的数据保存一个独立的副本.";
Blockly.TIP_USER_DEFINDED_TYPE	= "在创建链表时用来指定其他数据类型,\n 请将此块放入\"创建链表\"块的<数据类型>框中.";
Blockly.TIP_GET_LENGTH			= "获取指定链表的元素数量, 返回类型为unsigned long.";
Blockly.TIP_GET 				= "获取指定下标的数据,下标从1开始.\n";
Blockly.TIP_PUSH				= "将一个新数据添加入指定链表尾部(入队).";
Blockly.TIP_UNSHIFT				= "将一个新数据添加入指定链表头部.";
Blockly.TIP_ADD					= "将一个新数据添加入指定链表的指定位置.";
Blockly.TIP_SHIFT				= "获取并移出指定链表头部元素(出队).";
Blockly.TIP_POP					= "获取并弹出指定链表尾部元素(出栈).";
Blockly.TIP_DEL					= "从链表中移除指定下标的元素.";
Blockly.TIP_SHIFT_ALL			= "移除所有元素.";

//Rais_MatrixLED ------------------------------------------------//
Blockly.WARNING_DEQUE_CN_COMMA = '警告: 在DATAS框中检测到中文(全角)逗号, 请修改成英文(半角)逗号!';
Blockly.WARNING_DEQUE_TAIL_COMMA = '警告: 在DATAS框中的开头或末尾检测到逗号, 请移除开头或末尾的逗号!';
Blockly.WARNING_DEQUE_REPEAT_COMMA	= '警告: 在DATAS框中检测到重复的逗号, 请移除重复的逗号!';

Blockly.CREATE_MATRIX	= "创建LED点阵";
Blockly.MAT_NAME		= "名称:";
Blockly.CS			= "CS:";
Blockly.WR			= "WR:";
Blockly.DATA			= "DATA:";

Blockly.CREATE_POLY_MAT	= "创建LED点阵组";
Blockly.POLY_MAT_NUM	= "点阵块数:";
Blockly.DATAS			= "DATAS:";

Blockly.THE_MATRIX	= "点阵";
Blockly.SET_POINT		= "设置:";
Blockly.POINT_X		= "X:";
Blockly.POINT_Y		= "Y:";
Blockly.STATE_ON		= "亮";
Blockly.STATE_OFF		= "灭";
Blockly.PAINT_NOW	= "立即绘制";

Blockly.GET_POINT		= "获取:";

Blockly.FILL_MATRIX		= '填充矩形:';

Blockly.SET_LINE_		= "设置第";
Blockly._LINE			= "行:";
Blockly.INPUTS_BIN		= "二进制";

Blockly.NORMAL_MODE	= '普通模式';
Blockly.PROFESSIONAL_MODE = '专业模式';

Blockly.SET_STRING		= "设置字符串:";
//normal mode:
Blockly.X				= 'X:';
Blockly.Y				= 'Y:';
//pro mode:
Blockly.FROM_XY			= "从(X1, Y1) :";
Blockly.TO_XY			= "到(X2, Y2) :";
Blockly.SHFT_X			= "向右偏移(X) :";
Blockly.SHFT_Y			= "向下偏移(Y) :";

Blockly.SET_IMAGE		= "设置图案:";


Blockly.CLEAR_MATRIX	= "全屏设为:";
Blockly.CLEAR_NOW	= "立即更新";

Blockly.BLINK_MATRIX	= "闪烁";
Blockly.BLINK_ON		= "开";
Blockly.BLINK_OFF		= "关";

Blockly.SYS_ON			= '启动';
Blockly.SYS_DIS			= '关闭';

Blockly.SET_BRIGHTNESS	= "设置亮度(1~16):";

Blockly.PAINT_MATRIX	= "绘制点阵";

Blockly.TIP_CREATE_MATRIX	= "创建一个控制芯片为HT1632C的32x8 LED点阵, 并分别输入管脚CS, WR和DATA的编号.";
Blockly.TIP_CREATE_POLY_MAT	= "创建一个控制芯片为HT1632C的管脚共用32x8 LED点阵组, 其中管脚CS和WR共用, DATAS需输入各点阵其分别的DATA管脚(以逗号分隔开各DATA管脚).\n点阵块数如果留空将会通过DATAS管脚数目推断获得.";
	Blockly.TIP_COORD_STATEMENT	= "\n坐标声明: 以左上角为(1, 1)点; X轴范围为[1~32], Y轴范围为[1~8].(管脚共用点阵的Y轴范围则为[1~(8 * 点阵块数 )])";
	Blockly.TIP_PAINT_STATEMENT = "注意: 若没有勾选'立即绘制'框, 则该图形块并不会马上改变点阵, 必须调用 '绘制点阵' 图形块来更新.";
Blockly.TIP_SET_POINT	= "设置一个点的状态, 其中状态框允许填入逻辑表达式." + Blockly.TIP_COORD_STATEMENT + "\n" + Blockly.TIP_PAINT_STATEMENT;
Blockly.TIP_GET_POINT	= "获取一个点的状态." + Blockly.TIP_COORD_STATEMENT;
Blockly.TIP_FILL_RECT	= "在点阵屏上填充一个矩形, (x1, y1)为矩形左上角的点坐标, (x2, y2)为矩形右下角的点坐标.\n" + 
							Blockly.TIP_COORD_STATEMENT + '\n' + Blockly.TIP_PAINT_STATEMENT;
Blockly.TIP_SET_LINE	= "设置一行的状态, 若勾选'二进制'框,则直接输入二进制数即可(0代表灭, 1代表亮)." + Blockly.TIP_COORD_STATEMENT + "\n" + Blockly.TIP_PAINT_STATEMENT;
Blockly.TIP_NORMAL_MODE_SET_STR = '设置一行字符串, 该字符串以(X,Y)为左上角, 向右方和下方绘制. X,Y可以输入负数以使字符串向左(向上)偏移.' +
								'\n目前支持显示的字符有空白符,数字0~9,英文字母大小写及 { } [ ] ( ) < > , ; . : ! \' \" # $ % & * \\ / + - = ^ _ ` ~ ' + 
								Blockly.TIP_COORD_STATEMENT + '\n' + Blockly.TIP_PAINT_STATEMENT;
Blockly.TIP_NORMAL_MODE_SET_IMG	= "设置一个8x8的图像(该8x8图像块来源于mixly的显示器栏->点阵屏中的点阵预设图案或数组). 该图像以(X,Y)为左上角向右方和下方绘制. X,Y可以输入负数以使字符串向左(向上)偏移." + 
								Blockly.TIP_COORD_STATEMENT + '\n' + Blockly.TIP_PAINT_STATEMENT;
								

Blockly.TIP_CLEAR_MAT	= "将点阵所有点熄灭或点亮. 注意: 若没有勾选'立即更新'框, 则该图形块不会马上改变点阵状态, 必须调用'绘制点阵'图形块来更新.";
Blockly.TIP_BLINK_MAT	= "使点阵以每秒两次(0.25s开, 0.25s关)的频率闪烁.";
Blockly.TIP_SET_BITNS	= "设置点阵亮度, 范围为1~16. 默认为16.";
Blockly.TIP_SET_SYSTEM	= "设置点阵系统状态, 关闭后点阵将不再显示, 也不再响应绘制命令, 但仍然可以使用获取或设置命令. 系统默认为启动状态.";

Blockly.TIP_SET_STR		= "设置一行字符串, 在以(X1,Y1)为左上角,(X2,Y2)为右下角的两点为对角线的矩形区域内绘制.(若字符串没有绘制完将会直接截断).\n  \
						   通过输入向右或向下(输入负数则为向左或向上)的偏移值来使字符串偏移,从而能够实现字符串滚动显示.\n	\
						   目前支持显示的字符有空白符,数字0~9,英文字母大小写及 { } [ ] ( ) < > , ; . : ! ' \" # $ % & * \\ / + - = ^ _ ` ~ "
						+ Blockly.TIP_COORD_STATEMENT + "\n"
						+ Blockly.TIP_PAINT_STATEMENT;
Blockly.TIP_PAINT_MAT	= "绘制点阵. 注意: 在其他部分图形块中若没有勾选'立即绘制'框, 则并不会马上改变点阵, 必须调用该图形块来更新.";


//Rais_Graph  -------------------------------------------------------------
Blockly.O_NORTH			= "北方↑";
Blockly.O_EAST			= "东方→";
Blockly.O_SOUTH			= "南方↓";
Blockly.O_WEST			= "西方←";

Blockly.O_GO_AHEAD		= "直行\u21E7";
Blockly.O_TURN_LEFT		= "左转\u21B6";
Blockly.O_TURN_RIGHT	= "右转\u21B7";
Blockly.O_GO_BACK		= "掉头\u21E9";
Blockly.O_ONLY			= "(正交图)";

Blockly.CREATE_GRAPH		= "创建通用图";
Blockly.CREATE_ORTHOGONAL_GRAPH	= "创建正交图";
Blockly.INIT_PF			= "及初始化寻路算法";

Blockly.GRAPH_NAME		= "名称:";
Blockly.VERTEX_NUM		= "顶点数:";
Blockly.MAX_EDGE_NUM		= "邻边数:";
Blockly.GRAPH_BUILD		= "构造:";

Blockly.NORMAL_GRAPH		= "通用图";
Blockly.DOT_S				= "的";
Blockly.GRAPH_LINK		= "-连接-";
Blockly.THE_VERTEX			= "顶点";
Blockly.EDGE				= "的边";

Blockly.GRAPH				= "图结构";
Blockly.ORTHOGONAL_GRAPH= "正交图";

Blockly.LINK_LINE		= "连接一行";
Blockly.FROM_S_TO_N 	= "从南到北↑";
Blockly.FROM_W_TO_E		= "从西到东→";
Blockly.FROM_N_TO_S		= "从北到南↓";
Blockly.FROM_E_TO_W		= "从东到西←";

Blockly.CUT				= "断开邻边";

Blockly.FROM_VERTEX		= "获取从顶点";
Blockly.TO_VERTEX			= "到顶点";
Blockly.THE_EDGE_INDEX		= "的方向";

Blockly.GRAPH_SET			= "设置";
Blockly.GRAPH_GET			= "获取";
Blockly.GRAPH_START		= "起点";
Blockly.GRAPH_DEST		= "终点";

Blockly.FINDING			= "生成路径";
Blockly.FINDING_RESULT	= "寻路结果";
Blockly.PF_FOUND		= "成功找到路径";
Blockly.PF_HASN_FOUND	= "未调用「生成路径」函数";
Blockly.PF_UNREACHABLE_DEST = "不可到达的目的地";
Blockly.PF_NULL_GRAPH	= "空的图结构";
Blockly.PF_NULL_START	= "空的起点";
Blockly.PF_NULL_DEST	= "空的终点";

Blockly.GET_PATH_LENGTH	= "获取路径长度";
Blockly.GET_PATH_THE_		= "获取路径第";
Blockly.GET_PATH_VERTEX	= "个顶点";

Blockly.GET_TURNING_DIR	= '获取转向行为';
Blockly.NOW_FASING		= '目前方向:';
Blockly.NEXT_DIRECTION		= '下一顶点的方向:';

Blockly.O_LAST_VERTEX   = '上个顶点:';
Blockly.O_CURRENT_VERTEX= '当前顶点:';
Blockly.O_NEXT_VERTEX   = '下个顶点:';


Blockly.SET_BUILTIN_GRAPH_LOGISTICS = "引入内建正交图并命名:";

Blockly.WARNING_PF_IN_BUILD	= "警告: 该图形块不允许放入「构造」域中! 请移出到构造域外.";

Blockly.TIP_O_DIR			= "指定正交图结构其中一顶点的边.";
Blockly.TIP_O_TURNING		= "指定正交图结构中行进的一个方向.";
Blockly.TIP_CREATE_GRAPH	= "创建一个通用图结构, 并为该图结构指定总顶点数目和每个顶点的最大邻接点(邻边)数目.\n顶点数如果留空将通过「构造」域中各「连接顶点」块最大的顶点编号推断获得.";
Blockly.TIP_CREATE_OGRAPH	="创建一个正交图结构, 并为该图结构指定总顶点数目.\n顶点数如果留空将通过「构造」域中各「连接顶点」块最大的顶点编号推断获得.\n" + 
						  "正交图结构定义: 每个顶点的最大邻接点(邻边)数目设定为4,\n" +
						  "且对每条存在的边都有: 一个顶点的东边必定连接另一个顶点的西边; \n"+
						  "一个顶点的北边必定连接另一个点的的南边.\n";
Blockly.TIP_LINK			= "连接两顶点, 并为这两顶点分别设定该边在其方向上的编号.\n" +
						  "注意: 此图形块不允许使用于正交图结构对象.";
Blockly.TIP_OLINK			= "连接两顶点, 并为第一个顶点设置该边的方向.\n" + 
						  "(第二个顶点将会依据正交图结构规则自动设置)\n" + 
						  "注意: 此图形块不允许使用于通用图结构对象";
Blockly.TIP_OLINKLN		= "连接一行的顶点, 从北到南或从西到东依次排列并连接输入框中的顶点.(第一个顶点前和最后个顶点后均不能加逗号)\n" +
						  "注意: 此图形块不允许使用于通用图结构对象.";
Blockly.WARNING_OLINKLN_HAS_CN_COMMA = '警告: 在「顶点」框中检测到中文(全角)逗号, 请修改成英文(半角)逗号!';
Blockly.WARNING_OLINKLN_HAS_TAIL_COMMA = '警告: 在「顶点」框开头或末尾检测到逗号, 请移除开头或末尾的逗号!';
Blockly.WARNING_OLINKLN_HAS_REPEAT_COMMA = '警告: 在「顶点」框中检测到重复的逗号, 请移除重复的逗号!';

Blockly.TIP_CUT			= "切断指定顶点的指定边的连接.\n";
						  
Blockly.TIP_GET_EDGE_IDX	= "获取两顶点的边在第一个顶点方向上的绝对方向(编号)\n" +
						  "若两顶点没有连接, 则返回该图结构定义的最大邻接点数.";

Blockly.TIP_GRAPH_SET		= "设置寻路算法的起点或终点, 若未设置则默认为1号顶点.";
Blockly.TIP_GRAPH_GET		= "获取寻路算法的起点或终点在其图结构中的编号.";
Blockly.TIP_FINDING		= "使用Breadth First Search Algorithm(广度优先搜索算法)寻找最短(经过顶点最少)的从起点顶点到终点顶点的路径.";
Blockly.TIP_PF_FINDING_RESULT = "返回寻路结果. 可与结果常量进行匹配.";
Blockly.TIP_PF_FINDING_RESULT_CONSTANT = "返回寻路结果常量.";
Blockly.TIP_PF_LENGTH		= "若寻路成功, 将返回路径的长度, 包含起点顶点和终点顶点; 若寻路失败则返回0.";
Blockly.TIP_PF_GET			= "从起点顶点为1起, 返回路径中指定下标的顶点在其图结构中的编号.";
Blockly.TIP_GET_TURNING_DIR = '由目前的方向和下一顶点的方向计算得出这次转向的行为, 其取值可能为:\n ' + 
						     '直行(0), 右转(1), 掉头(2), 左转(3).';
Blockly.TIP_GETTURNING_BEHAVIOR = '由上个顶点, 当前顶点, 下个顶点计算得出在当前顶点的转向行为, 其取值可能为:\n ' +
							'直行(0), 右转(1), 掉头(2), 左转(3).';
Blockly.TIP_BUINTIN_GRAPH_LOGISTICS = "该内建正交图为2019年度潮州比赛物流图, 以下为顶点编号:\n" +
	"......↑...............................(24)\n" +
	"......北..............................|\n" +
	"........................................|\n" +
	"(19)______(11)_______(7)_______(15)_______(23)\n" +
	"........................|...............|....................|\n" +
	"........................|...............|....................|\n" +
	"(18)_______(10)______(6)________(14)_______(22)\n" +
	"........................|...............|....................|\n" +
	"........................|..............(5)___(2).......|\n" +
	"........................|...............|....................|\n" +
	"(17)_______(9)_______(4)_______(13)_______(21)\n" +
	"........................|...............|....................|\n" +
	"........................|...............|....................|\n" +
	"(16)_______(8)_______(3)_______(12)_______(20)\n" +
	"........................................|\n" +
	"........................................|\n" +
	".......................................(1: home)\n";

Blockly.COMMENT_BUILTIN_GRAPH_LOGISTICS = 
"该内建正交图为2019年度潮州比赛物流图, 以下为顶点编号:\n \
     ↑           (24)\n\
     北            |\n\
                   |\n\
    (19)___(11)___(7)_____(15)____(23)\n\
            |      |       |\n\
            |      |       |\n\
    (18)___(10)___(6)_____(14)____(22)\n\
            |      |       |\n\
            |     (5)__(2) |\n\
            |      |       |\n\
    (17)___(9)____(4)_____(13)____(21)\n\
            |      |       |\n\
            |      |       |\n\
    (16)___(8)____(3)_____(12)____(20)\n\
                   |\n\
                   |\n\
                  (1: home)\n";


//Rais_LineTracker:---------------------------------------------------//
Blockly.WARNING_LT_CN_COMMA = '警告: 在「管脚」框中检测到中文(全角)逗号, 请修改成英文(半角)逗号!';
Blockly.WARNING_LT_TAIL_COMMA = '警告: 在「管脚」框中的开头或末尾检测到逗号, 请移除开头或末尾的逗号!';
Blockly.WARNING_LT_REPEAT_COMMA	= '警告: 在「管脚」框中检测到重复的逗号, 请移除重复的逗号!';

Blockly.CREATE_LINETRACKER	= "创建巡线传感器组";
Blockly.CREATE_TRAVELLER	= "创建Traveller";
Blockly.LINETRACKER_NAME	= "名称:";
Blockly.SENS_NUM			= "传感器数:";
Blockly.SENS_PINS			= "管脚(从左往右):";
Blockly.GUIDE				= "传入地图:";
Blockly.TIGGED_BLACK		= "检测到黑线的状态:";
Blockly.FASING			= "朝向:";

Blockly.MOTION			= "行为实现:";
Blockly.IS_NORMAL_STATE	= "正常状态判断规则:";
Blockly.IS_REACHING_VERTEX_STATE = "到达顶点状态判断规则:";

Blockly.MOTION_PWR			= "速度值";
Blockly.MOTION_DIR			= "方向值";
Blockly.WARNING_MOTION		= "警告: 该图形块仅允许在「行为实现」域内使用!";
Blockly.IS_STATE_RETURN		= "返回:该状态";
Blockly.IS_TRUE				= "成立(真)";
Blockly.IS_FALSE 				= "不成立(假)";

Blockly.WARNING_IS_STATE	= "警告: 该图形块仅允许在「状态判断规则」域中使用!";

Blockly.LINE_TRACKER_RUN	= "运行";
Blockly.LINE_TRACKER_SET	= "设置";
Blockly.LINE_TRACKER_POWER= "速度(0~255)";
Blockly.LINE_TRACKER_CORRECTING_DEG = "修正角度(0~90)";
Blockly.LINE_TRACKER_CENTER_LINE = "中心线(0~传感器数*2)";
Blockly.LINE_TRACKER_IS_RUNNING = "是否运行(真, 假)";

Blockly.LT_GET				= "获取数据";
Blockly.LT_POWER			= "速度";
Blockly.LT_CORRECTING_DEG	= "修正角度";
Blockly.LT_CENTER_LINE		= "中心线";
Blockly.LT_IS_RUNNING		= "是否运行";
Blockly.LT_TRIGGED_NUM	= "传感器触发数量";
Blockly.LT_TENDENCY		= "偏离方向";
Blockly.LT_IS_CONSECUTIVE 	= "触发的各传感器是否连续";
Blockly.LT_IS_NORMAL		= "是否为正常状态";

Blockly.LT_NORMAL		= "正常状态";
Blockly.LT_CORRECTING		= "修正状态";
Blockly.LT_INERTIA			= "惯性状态";
Blockly.LT_EXCEPTION		= "异常状态";
Blockly.LT_END			= "停止状态";

Blockly.LT_SEN				= "号传感器";

Blockly.LTT_FASING			= "朝向(仅限Traveller)";
Blockly.LTT_IS_REACHING_VERTEX	= "是否到达顶点(仅限Traveller)";
Blockly.LTT_TASK_NUM		= "任务数量(仅限Traveller)";

Blockly.LT_OVERRIDE_IS_STATE= "重写状态判断规则:";
Blockly.LT_OVERRIDE_STATE	= "重写状态行为:";

Blockly.TRAVELLER_ADD_TURNING_FUNC = "设置路线选择行为:";
Blockly.TRAVELLER_ADD_TASK	= "添加目标顶点到任务表:";
Blockly.TRAVELLER_RETURN	= "返回: ";
Blockly.TRAVELLER_LEFT_V	= "已经离开顶点(真)";
Blockly.TRAVELLER_NOT_LEFT_V = "没有离开顶点(假)";
Blockly.WARNING_ADD_TURNING_FUNC = "警告: 该图形块仅允许在「设置路线选择行为」域中使用!";

Blockly.TIP_MOTION_PWR	= "一个提供给您的速度值, 其值域为: 0~255.\n" + Blockly.WARNING_MOTION;
Blockly.TIP_MOTION_DIR		= "一个提供给您的方向值, 其值域为: -180~180.\n" + Blockly.WARNING_MOTION;
Blockly.TIP_IS_STATE_RETURN	= "告诉巡线传感器组或Traveller当运行到该图形块时, 其状态是否应该成立(注意: 当运行到该图形块时, 会立即结束判断, 因此该图形块下面无法接其他图形块).";
Blockly.TIP_IF_LEFT_VERTEX	= "告诉Traveller当运行到该图形块时,是否应该结束「到达顶点状态」.(注意: 当运行到该图形块时, 会立即结束判断, 因此该图形块下面无法接其他图形块)";

Blockly.TIP_SENS_NUM 		= '> 传感器数: 指定传感器的数目, 其值应与下面提供的管脚编号数量一致. 如果留空将通过传感器管脚数目推断获得.\n';
Blockly.TIP_PINS			= '> 管脚(从左往右): 指定每个传感器的管脚编号, 并使用英文逗号分隔开(注意: 末尾不应加逗号), 该管脚号的顺序应对应其传感器的排列, 并且为从左到右.\n';
Blockly.TIP_BLACK_STATE		= '> 检测到黑线的状态: 当巡线传感器检测到黑线时, 其返回的值为高(HIGH)还是低(LOW).\n';
Blockly.TIP_CENTER_LINE		= '> 中心线: 指定当巡线传感器组偏移路线(处于修正状态时)应靠近的方向.留空则其值为传感器数. 值域为0~传感器数*2 .\n' + 
						    '	一个中心线分配的例子(当传感器数 = 5):\n'					+
						    '	传感器排列:	| [1] |  [2]  | [3] | [4] | [5] | \n'			+
						    '	中心线的值:	0  1  2   3   4  5  6  7  8  9  10\n'			+
						    '	因此当中心线的值 = 传感器数时, 巡线传感器组在处于修正状态时会向中间的那个(或中间两个传感器)传感器靠近.\n';
Blockly.TIP_MOTION		= '> 行为实现: 该域提供给您速度和方向两个参数, 需要您实现搭载有巡线传感器组的小车的控制方法.\n'	+
						    '速度: 值域为0~255, 该数越大, 小车的正向速度应也越大, 且等于0时应为停止.\n'	+
						    '方向: 值域为-179~180, 当等于0时, 小车行进应为直行; 为负数时应偏左, 反之为偏右; 其绝对值越大, 偏移的速度应越快; 另外, 当等于180时, 小车行进应为直线倒退.\n' +
						    '该域在内部仅被使用于默认状态行为, 因此当重写了所有的状态行为时, 该域可以留空.\n';

Blockly.TIP_NORMAL_STATE	= '> 正常状态: 该状态应为搭载有巡线传感器组的小车在直行时的动作.\n' ;
Blockly.TIP_IS_NORMAL_STATE= '> 填写正常状态的判断规则, 并在适当的时候返回该状态是否成立.\n' + Blockly.TIP_NORMAL_STATE;

Blockly.TIP_CORRECTING_STATE= '> 修正状态: 该状态应为搭载有巡线传感器组的小车在偏移路线时尝试重回到正常路线时的动作.\n';
Blockly.TIP_IS_CORRECTING_STATE= '> 填写修正状态的判断规则, 并在适当的时候返回该状态是否成立.\n' + Blockly.TIP_CORRECTING_STATE;

Blockly.TIP_IS_REACHING_VERTEX_STATE = '> 填写到达顶点状态的判断规则(仅限Traveller),即告诉Traveller在什么情况下应判断为到达顶点的状态,\n 并在适当的时候返回该状态是否成立.\n';

Blockly.TIP_CREATE_LINE_TRACKER = "创建一个巡线传感器组并指定其名称. 以下各参数含义为:\n" +
	Blockly.TIP_SENS_NUM + Blockly.TIP_PINS + Blockly.TIP_BLACK_STATE + Blockly.TIP_CENTER_LINE + Blockly.TIP_MOTION + Blockly.TIP_IS_NORMAL_STATE;

Blockly.TIP_CREATE_TRAVELLER = "创建一个Traveller(拥有图结构的巡线传感器组)并指定其名称. 以下各参数含义为:\n" + 
	Blockly.TIP_SENS_NUM + Blockly.TIP_PINS + Blockly.TIP_BLACK_STATE + Blockly.TIP_CENTER_LINE + Blockly.TIP_MOTION + Blockly.TIP_IS_NORMAL_STATE + Blockly.TIP_IS_REACHING_VERTEX_STATE;

Blockly.TIP_TRACKER_RUN	= '运行巡线传感器组, 该图形块需要被一直调用. 每次调用执行的操作为: \n'	+
						   '->判断是否运行(为否将直接运行结束状态并结束该块的调用);\n'	+
						   '->更新传感器和其他各数据的值;\n'	+
						   '->判断目前应为什么状态;\n'	+
						   '->执行状态函数.';
Blockly.TIP_TRACKER__SET	= '设置参数:\n'	+
						    '>速度: 设置搭载有巡线传感器组的小车的基础速度, 其各个状态的速度将在这个速度上或增或减, 默认为100.\n'	+
						    '>修正角度: 设置当搭载有巡线传感器组的小车处于修正状态时偏转的基础角度,小车偏移中心越远, 其方向将设置为修正角度或增加若干, 默认为9.\n'	+
						     Blockly.TIP_CENTER_LINE +
						    '>是否运行:此为巡线传感器组的总开关, 当设定为true(真), 执行「运行」图像块将正常执行其操作; 而设定为false(假)时将直接调用结束状态.\n' ;
Blockly.TIP_TRACKER_GET	= '获取数据.';
Blockly.TIP_TRACKER_GET_SENS='获取指定传感器是否检测到黑线的状态(其编号从1开始, 从左往右).';
Blockly.TIP_TRACKER_OVERRIDE_IS_STATE_FUN = '不使用默认的状态判断规则而重新编写, 该块不是非必须的.'; 
Blockly.TIP_TRACKER_OVERRIDE_STATE_FUN 	= '不使用默认的状态行为而重新编写, 该块不是非必须的.'; 
Blockly.TIP_TRACKER_ADD_TURNING_FUNC	= '为在到达顶点时的各个行进方向添加转向函数, 该块对Traveller是必须的, 且应编写所有方向的转向函数.\n' +
										'否则当Traveller到达顶点将要转向时将因为找不到该转向动作而停止.';
Blockly.TIP_TRAVELLER_ADD_TASK	= '将一个目标顶点加入任务表, Traveller将尝试按加入的顺序依次到达.';

Blockly.TIP_IN_RANGE		= "如果第一个框里的数大于等于第二个数且小于等于第三个数则返回true(真), 否则返回false(假)";
Blockly.TIP_F_STRING		= '将字符串存储在Flash里, 而不是SRAM, 以节省动态内存空间.\n注意:这样做将意味着这个字符串是一个常字符串.';
Blockly.TIP_STATEMENTS_TIMING = "对该域内的语句块进行计时.返回一个无符号长整数(unsigned long)时间数值。";
Blockly.TIP_PRAGMA_OPTIMIZE = '启用更高的编译器优化选项, 使用该块将可能大幅优化代码的运行速度,\n但同时代码占用的程序存储空间也可能大幅增大,若空间充足,可考虑启用此选项. 参数"O3"的优化力度比"O2"的更大.\n——献祭你的空间吧, 骚年! φ(>ω<*) ';
Blockly.TIP_BETTER_RANDOM_SEED = '这个图形块将自动在EEPROM中存储开机次数(uint16_t类型)并将其作为随机数初始化的种子, 其地址为0x0(high)到0x1(low).';
Blockly.TIP_BINARY_CONSTANT = '一个以二进制表示的非负整数, 允许输入空格以使数字容易辨认.\n二进制数 ';
Blockly.TIP_BINARY_CONSTANT_DYNAMIC_TRANSLATE = ' 转换成十进制为: ';
Blockly.TIP_ABANDON_RETVAL  = '抛弃一个有返回值块的值, 使之能与上下块连接.';

//\17: body; \18: thing; \19: otherword
Blockly.YING_XIAO_HAO_TEMPLATE = '"  \\17\\18是怎么回事呢？\\17相信大家都很熟悉，但是\\17\\18是怎么回事呢？下面就让小编带大家一起了解吧：\\n"\n' +
'"  \\17\\18，其实就是\\19。大家可能会很惊讶\\17怎么会\\18呢？但事实就是这样，小编也感到非常惊讶。\\n"\n' + 
'"  这就是关于\\17\\18的事情了，大家有什么想法呢？欢迎在评论区告诉小编一起讨论哦！"';

Blockly.TIP_CREATE_EIGHT_BTNS = "初始化一个八键电容触摸按键. \n型号: LY-S5003, 控制芯片: BS818A-2 .\n注意: 该模块以并联方式使用控制芯片, 所以不支持多按键同时触摸.";
Blockly.TIP_EIGHT_BTNS_GET_KEY = "获取被触摸的按键的编号. 当没有按键被触摸时返回0 .";
Blockly.TIP_EIGHT_BTNS_ISPRESSED = "获取是否有按键被触摸, 有则返回true, 否则返回false .";

Blockly.TIP_EIGHT_BTNS_WAITS = "等待指定的按键被触摸: 当指定按键被触摸时执行一些语句.\n等待指定的按键被松开: 当指定按键被松开时执行一些语句(若该按键还没有被触摸, 则会一直等待按键被触摸到松开).\n等待指定的按键被触摸直到松开: 当指定按键被触摸时执行一些语句, 然后再次等待直到该按键被松开.";
Blockly.TIP_EIGHT_BTNS_GET_PRESS_TIME_LEN = "获取指定的按键从触摸到松开的时间, 单位为毫秒(ms), 计时最大值为65535ms(超过则会溢出, 重新计时). 该语句块会一直等待指定按键被触摸到松开.\n注意: 若还没运行到此语句块时指定按键就已经被触摸, 则只会从运行到此语句块时开始计时.";
Blockly.TIP_EIGHT_BTNS_RETURN = "该图形块仅允许在\"等待按键触摸/松开\"的「执行」域中使用, 用于提前跳出该域.";
Blockly.WARNING_EIGHT_BTNS_RETURN = "警告: 该图形块必须放入\"等待按键触摸/松开\"的「执行」域中!";

Blockly.TIP_MAGIC = "魔法的统一注意事项: \n1.一旦魔法与受它影响的块脱离连接, 他们可能暂时不会还原, 但是他们会在下一次进入存档时还原.因此不应该使其与魔法脱离连接.\n\
										2.禁用对它们无效.\n3.当一个块的上方同时有多个魔法时, 它的状态由其上面最近的块决定.";
Blockly.TIP_BLOCK_DYE = "Magic! 这个魔法能将连接在它下面的图形块都染成和它一样的颜色! \n" +Blockly.TIP_MAGIC;
Blockly.TIP_BLOCK_DYE_HEX = "Hex Magic! 通过输入16进制颜色值设定颜色, 这个魔法能将连接在它下面的图形块都染成和它一样的颜色! \n" + Blockly.TIP_MAGIC;
Blockly.TIP_WARNGING_CONTAGION = "Warning Magic! 这个魔法能将连接在它下面的图形块都设置上警告! 如果文本框留空, 将移除那些警告. 另外, 这个魔法因为过于强大而极容易引起程序卡死或崩溃!\n" + Blockly.TIP_MAGIC;